package transacoes;

import utils.*;
import data.*;
import java.util.*;

public class Medicamento {

  public boolean incluir (MedicamentoDO medicamento) throws Exception{

     // validacao das regras de negocio
     if ( (isEmpty(medicamento.getNome())) || ( isEmpty(medicamento.getQuantidadeEstoque())) || (isEmpty(medicamento.getPreco())) ) {
       return false;
     }

     // efetuando a transacao
     Transacao tr = new Transacao();
     try {

       tr.begin();
         MedicamentoData mdata = new MedicamentoData();
         mdata.incluir(medicamento, tr);
       tr.commit();
       return true;
       
     } catch(Exception e) {
         tr.rollback();
         System.out.println("erro ao incluir " + medicamento.getNome());
         e.printStackTrace();
     }
     return false;
  } // incluir
  
  public boolean excluir (MedicamentoDO medicamento) throws Exception{

     // validacao das regras de negocio
     if ( (isEmpty(medicamento.getNome()))) {
       return false;
     }

     // efetuando a transacao
     Transacao tr = new Transacao();
     try {

       tr.begin();
         MedicamentoData mdata = new MedicamentoData();
         mdata.excluir(medicamento, tr);
       tr.commit();
       return true;
       
     } catch(Exception e) {
         tr.rollback();
         System.out.println("erro ao excluir " + medicamento.getNome());
         e.printStackTrace();
     }
     return false;
  } // excluir

  public boolean atualizar(MedicamentoDO medicamento) throws Exception {
     Transacao tr = new Transacao();
         try{
           // inserir validacoes de regras de negocio
           tr.begin();
             MedicamentoData mdata = new MedicamentoData();
             mdata.atualizar(medicamento, tr);
           tr.commit();
           return true;
         } catch (Exception e) {
           tr.rollback();
           System.out.println("erro ao atualizar" + medicamento.getNome());
           e.printStackTrace();
         }
         return false;
  } // atualizar

  public MedicamentoDO buscar(int idMedicamento) throws Exception{
     Transacao tr = new Transacao();
         try{
           tr.beginReadOnly();
             MedicamentoData mdata = new MedicamentoData();
             MedicamentoDO m = mdata.buscar(idMedicamento, tr);
           tr.commit();
           return m;
         } catch (Exception e) {
           tr.rollback();
           System.out.println("erro ao buscar" + idMedicamento);
           e.printStackTrace();
         }
         return null;
  } // buscar

  public Vector pesquisar(String nome) {
     if ( isEmpty(nome) )
        return null;

     Transacao tr = new Transacao();
     try {
             tr.beginReadOnly();
           MedicamentoData mdata = new MedicamentoData();
           Vector v = mdata.pesquisarPorNome(nome, tr);
                 tr.commit();
                 return v;
     } catch(Exception e) {
         System.out.println("erro ao pesquisar " + nome);
         e.printStackTrace();
     }
     return null;
  } // pesquisar

  private boolean isEmpty(String s) {
     if (null == s)
       return true;
     if (s.length() == 0)
       return true;
     return false;
  }

  public static void main(String[] args) {
      Medicamento m = new Medicamento();
      MedicamentoDO medicamento = new MedicamentoDO();
      try {
            medicamento = m.buscar(6);
                System.out.println(medicamento.getNome());
      } catch(Exception e) {
          e.printStackTrace();
      }
  } // main
} // Medicamento